/**
 * 查询设备信息命令类
 */
import BaseCommand from './baseCommand';

class QueryDeviceInfoCommand extends BaseCommand {
  static CMD = 0x14;  // 命令类型：查询设备信息

  /**
   * 创建查询命令
   * @returns {Uint8Array} 命令帧
   */
  static createQuery() {
    console.log('[查询设备信息] 创建命令');
    return this.packFrame(this.CMD);
  }

  /**
   * 解析响应数据
   * @param {Uint8Array} frame - 完整的响应帧
   * @returns {Object|null} 解析结果
   */
  static parseResponse(frame) {
    console.log('[查询设备信息] 开始解析响应');
    
    const baseResult = this.parseBaseFrame(frame);
    if (!baseResult) return null;

    if (baseResult.cmd !== this.CMD) {
      console.warn('[查询设备信息] 命令类型不匹配');
      return null;
    }

    try {
      // 将响应数据转换为JSON字符串
      const jsonStr = String.fromCharCode.apply(null, baseResult.data);
      const deviceInfo = JSON.parse(jsonStr);
      
      console.log('[查询设备信息] 解析成功:', deviceInfo);
      return deviceInfo;
    } catch (err) {
      console.error('[查询设备信息] JSON解析失败:', err);
      return null;
    }
  }
}

export default QueryDeviceInfoCommand; 